#include "StdAfx.h"
#include "Ray.h"

CRay::CRay(const CVector3D& vOrigin, const CVector3D& vDir)
: m_vOrigin(vOrigin)
, m_vDir(vDir)
{
	m_vInvDir.x = 1.f / m_vDir.x;
	m_vInvDir.y = 1.f / m_vDir.y;
	m_vInvDir.z = 1.f / m_vDir.z;
}

CRay::~CRay(void)
{
}

void CRay::Set(const CVector3D& vOrigin, const CVector3D& vDir)
{
	m_vOrigin = vOrigin;
	m_vDir = vDir;

	m_vInvDir.x = 1.f / m_vDir.x;
	m_vInvDir.y = 1.f / m_vDir.y;
	m_vInvDir.z = 1.f / m_vDir.z;
}

CVector3D CRay::Evaluate(DATA_TYPE t) const
{
	return m_vOrigin + t * m_vDir;
}